package com.kapcb.async.callback;

import com.kapcb.async.wrapper.WorkerWrapper;

import java.util.Map;

/**
 * <a>Title: IWorker </a>
 * <a>Author: Kapcb <a>
 * <a>Description: 每个最小执行单元需要实现该接口 <a>
 *
 * @author Kapcb
 * @version 1.0
 * @date 2024/5/10 20:25
 * @since 1.0
 */
@FunctionalInterface
public interface IWorker<T, R> {

    /**
     * 在这里做耗时操作，如 RPC 请求、IO 等
     *
     * @param object      object
     * @param allWrappers 任务包装
     * @return 任务执行结果
     */
    R action(T object, Map<String, WorkerWrapper<?, ?>> allWrappers);

    /**
     * 超时、异常时，返回的默认值
     *
     * @return 默认值
     */
    default R defaultValue() {
        return null;
    }

}
